package com.dbh.alg.algorithm.hot100.动态规划;

import java.util.ArrayList;
import java.util.List;

/**
 * Leetcode 118. 杨辉三角形
 *
 * 描述：给定一个非负整数 numRows，生成杨辉三角的前 numRows 行。
 *
 * 示例：
 * 输入：numRows = 5
 * 输出：
 * [
 *      [1],
 *     [1,1],
 *    [1,2,1],
 *   [1,3,3,1],
 *  [1,4,6,4,1]
 * ]
 */
public class Leetcode118_杨辉三角形 {

    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> ret = new ArrayList<>();
        for (int i = 0; i < numRows; i++) {
            List<Integer> row = new ArrayList<>();
            for (int j = 0; j <= i; j++) {
                if (j == 0 || i == j) {
                    row.add(1);
                } else {
                    row.add(ret.get(i - 1).get(j - 1) + ret.get(i - 1).get(j));
                }
            }
            ret.add(row);
        }
        return ret;
    }
}
